package alg.array;

import java.util.*;

/**
 * @author:yuziji
 * @create: 2023-05-04 16:26
 * 寻找两个数组的中位数
 * 输入：nums1 = [1,3], nums2 = [2]
 * 输出：2.00000
 * 解释：合并数组 = [1,2,3] ，中位数 2
 */
public class TwoArrayOfMiddle {
    public static void main(String[] args) {
        int[] arr1 = {1,2};
        int[] arr2 = {3,4};
        double medianSortedArrays = findMedianSortedArrays(arr1, arr2);
        System.out.println(medianSortedArrays);
    }


    /**
     * 寻找两个数组的中间值
     * 先定义一个ArrayList，将两个数组添加到ArrayList中
     * 通过list.size()得到集合的长度
     * 如果长度为奇数：直接返回list.get(list.size()/2)
     * 如果长度为偶数：返回中间下标和中间下标下一个节点的平均值
     * @param nums1
     * @param nums2
     * @return
     */
    public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        List<Integer> list = new ArrayList();
        for (int i = 0; i < nums1.length; i++) {
            list.add(nums1[i]);
        }
        for (int i = 0; i < nums2.length; i++) {
            list.add(nums2[i]);
        }
        Collections.sort(list);
        if (list.size()%2!=0){
            return list.get(list.size()/2);
        }else {
            return (double) (list.get(list.size()/2)+list.get((list.size()/2-1)))/2;
        }

    }

















}
